#include<bits/stdc++.h>
using namespace std;
int pre[100];
int s[100];
int find(int x){
	if(pre[x]==x)
		return x;
	return pre[x]=find(pre[x]);
}
void Union(int x,int y){
	int fx=find(x);
	int fy=find(y);
	pre[fy]=fx;
}
int main(){
	int n,m,num,x,top;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++){
		pre[i]=i;
	}
	while(m--){
		scanf("%d",&num);
		for(int i=1;i<=num;i++){
			scanf("%d",&x);
			if(i==1){
				top=x;
			}
			else{
				Union(top,x);
			}
		}
	}
	int MAX=0;
	for(int i=1;i<=n;i++){
		int root=find(i);
		s[root]++;
		MAX=max(MAX,s[root]);
	}
	printf("%d",MAX);
	return 0;
}
